# type可以接受一个类的描述作为参数，然后返回一个类。
# type可以像这样工作：
# type(类名, 由父类名称组成的元组（针对继承的情况，可以为空），包含属性的字典（名称和值）)

def echo_foo(self):
    print(self.foo)


@staticmethod
def testStatic():
    print("static method ....")


@classmethod
def testClass(cls):
    print("class method ....")
    print(cls.foo)


MyClass = type("MyClass1", (), {'foo': True, 'echo_foo': echo_foo, "testStatic": testStatic,
                                "testClass": testClass})  # 定义了名为 MyClass1 的类，并赋值给 MyClass
t = MyClass()
print(t)  # 创建 MyClass1 的实例对象 out: MyClass1
print(type(t))
print(t.foo)
t.echo_foo()  # 执行方法
MyClass.testClass()
MyClass.testStatic()
